package clients

import (
	"context"
	"fmt"

	"gitee.com/go-course/go12/vblog/apps/token"
	"github.com/infraboard/mcube/client/rest"
)

type TokenClient struct {
	c *rest.RESTClient
}

// 登录接口(颁发Token)
// http client
// /api/vblog/v1/tokens/ -->  /api/vblog/v1   + tokens
// base url
// http:127.0.0.1:8070/api/vblog/v1/tokens
func (c *TokenClient) Login(ctx context.Context, req *token.LoginRequest) (
	*token.Token, error) {
	tk := token.NewToken()
	err := c.c.Post("/").Body(req).Do(ctx).Into(tk)
	if err != nil {
		return nil, err
	}
	return tk, nil
}

// 退出接口(销毁Token)
func (c *TokenClient) Logout(context.Context, *token.LogoutRequest) error {
	return nil
}

// 校验Token 是给内部中间层使用 身份校验层
// 校验完后返回Token, 通过Token获取 用户信息
func (c *TokenClient) ValiateToken(context.Context, *token.ValiateToken) (*token.Token, error) {
	return nil, fmt.Errorf("not impl")
}
